Automotive onboard electronics systems are becoming increasingly complex. Today's automobiles frequently have multiple microcontrollers to control functions as diverse as engine timing, transmission shift points, vehicle emission, and the control of the vehicle driver interface. Diagnosis of vehicle malfunction often requires similarly complex automobile diagnostic test systems and tools. For example, for a cylinder using a coil-on-plug (distributor-less) design, diagnosis of cylinder mis-firing requires the use of a high-speed oscilloscope.
Current automobile diagnostic test systems must (1) communicate with and retrieve fault information from the vehicle's on-board microcontrollers and (2) support the ability to measure and/or generate signals. Communication between the automobile diagnostic test system and the vehicle's on-board microcontroller requires that the diagnostic test system be able to understand the different protocol(s) that a specific automobile may use. A second function that diagnostic test systems need to support is the ability to measure signals and/or generate signals. Measurement requirements can reduce to a handful of operations including the measurement of voltage and current. These measurements may produce a single-value response (e.g. an ohm-meter reading) or a series of values (e.g. an oscilloscope.) From the measurement information, it is possible to derive other data, such as the frequency of a signal.
FIG. 1A shows a block diagram of a traditional microcontroller controlled automotive test diagnostic system. The test diagnostic system includes a computer 102, a bus 106, a bus interface 118, a dual port RAM 130, a microcontroller 132, and analog circuitry 138. The computing means 102 typically includes a host processor 112, a chipset 114, and a host memory 116. The microcontroller 132 is electrically coupled to analog circuitry 138, where each analog circuit 138 can be connected to a different vehicle system part or system to be tested (e.g., electrical system, spark plug) through cables that connect to the instrumentation system.
FIG. 1B is a block diagram of a microcontroller 132 of the type which could be used in the test diagnostic system shown in FIG. 1A. The microcontroller 132 includes a processing means 140, a memory means 142 (typically including both ROM 144 and RAM 146 memory devices), a timer 148, an input port 150, an output port 152, and a serial interface 154. The processing means 140, memory means 142, the timer 148, the input port 150, output port 152 and serial interface 154 are all electrically connected via a bus 156. The bus 156 is connected to the dual port RAM 130 through the microprocessor's bus interface 158. The serial interface 154 is connected to the analog circuitry 138 via a serial bus 160.
Traditional automotive test diagnostic systems typically perform: (1) data conversion, (2) data processing, and (3) data output. The analog circuitry (which typically includes an A/D converter for input channels) is used to convert analog measurements to a digital format. Data processing is performed by a microcontroller. Processing steps typically include: control of the analog circuitry, acquiring the data from the analog circuitry, qualifying and filtering the data to determine useability, storing the data to system RAM, and converting the data values to the desired format. After processing, the data is retrieved and output as desired by the applications program.
In traditional automotive diagnostic systems, a microcontroller 132 performs the data processing tasks. After the microcontroller 132 has been configured and data has been collected, a typical sequence of events for data transfer from the microcontroller 132 to the host processor 112 is as follows. First, the host processor 112 is interrupted by the microcontroller 132. The host processor 112 then reads the collected input data from the dual port RAM 130 and stores the data values in memory 116. The data is converted into the desired format and the host processor 112 notifies the application program that the data is available in the main memory 116 for use.
The process for transferring data from the microcontroller is slow, since the microcontroller 132 must access memory to fetch the instruction ( x clock cycles) and then execute the instruction (y clock cycles). For each input channel the microcontroller 132 must control the analog circuitry, filter/qualify the sample value, and store the data value before the next sample value arrives.
Consider as an example, the task of determining if a threshold value on an input channel has been crossed once the value is available in the digital domain. Determining if a threshold value has been crossed requires performance of the following series of steps in a microcontroller-based test diagnostic system. The host application writes a new command (e.g. to check for a specific threshold, channel number, and sampling rate) to the dual-port RAM 130 and the microcontroller 132 is interrupted in order to fetch the new command. The microcontroller 132 enters the interrupt-service routine (first prepares for ISR, then reads the routine from its program ROM). The microcontroller 132 then reads the new instrumentation command from the dual-port RAM 130 and configures the analog section 138 as is appropriate. The microcontroller 132 controls the analog to digital converter (ADC) and reads the ADC sample data. For each sample the microcontroller 132 reads, it checks the value of the sample to determine if the threshold has been crossed. When the microcontroller 132 determines the threshold has been crossed, the microcontroller 132 then reads the time value to indicate the time the condition was satisfied. The microcontroller 132 then places the timestamp value in the dual-port RAM 130 and the microcontroller 130 interrupts the host to notify it that it should retrieve the information from the dual-port RAM 130. The host-level device driver then enters an interrupt service routine, reads the information from the dual-port RAM and writes the information to the host memory.
The disadvantage of the vehicle diagnostic system 100 shown in Figure 1A is that the microcontroller 132 needs to execute commands for every operation it is involved in. Additionally, interrupting the host processor 112 to retrieve the data means that the host processor 112 will be continuously involved in the transfer of data from the dual-port RAM 130 to the host memory 116. This heavily loads the duties of the host processor, since it must frequently give up continuous blocks of its bandwidth to the task of data movements from the instrumentation peripheral 104 to the main memory.
Although a microcontroller based solution works well for low-speed systems which also have few instrumentation channels, problems arise when trying to support real-time data manipulation requirements for a high-speed channel (or many low-speed channels). For example, in an interrupt-based system, a dual port RAM that could hold 2 KB of data would have to interrupt the host 1000 times a second to sustain the required throughput of approximately 2 MB per second, the data rate of a typical high-speed channel. Increasing the dual-port RAM capacity alleviates the problem, but with limited improvement and at a substantial cost. For example, increasing the dual-port memory size by a factor of 10 still requires interruption of the host at least 100 times per second (with each interruption lasting 10 times as long) just for data transfers.
Unfortunately, a microcontroller based solution cannot keep up with the real-time data analysis on high-speed data channels without heavily impacting the host's processing bandwidth. An automotive test diagnostic system which is capable of real-time data processing on sophisticated multiple, independent channels is needed.